home *** CD-ROM | disk | FTP | other *** search
/ PsL Monthly 1993 December / PSL Monthly Shareware CD-ROM (December 1993).iso / prgmming / dos / pascal / csdudes.exe / PDXFLD.HPP < prev    next >
Text File  |  1992-02-27  |  6KB  |  191 lines

  1. /*┌───────────────────────────────────────────────────────────────────────┐
  2.   │                                                                       │
  3.   │   Module:  PDXFLD.H                                                   │
  4.   │   Author:  Rick Kligman                                               │
  5.   │   Purpose: Class definition for Paradox fields                        │
  6.   │                                                                       │
  7.   │   Last Modified: 05-17-91 00:34am                                     │
  8.   │                                                                       │
  9.   │   Copyright 1991 Rick Kligman                                         │
  10.   │   This code may be freely used and distributed in commercial apps     │
  11.   │   provided some mention of PXBuddy++ is made in the documentation.    │
  12.   │                                                                       │
  13.   │   Version 1.00                                                        │
  14.   └───────────────────────────────────────────────────────────────────────┘ */
  15.  
  16.  
  17. /*
  18.  *      future enhancements:
  19.  *
  20.  *          member function set should check
  21.  *            validity of number being set into field. That way
  22.  *            when you write field to record buffer, data is OK.
  23.  */
  24.  
  25. #ifndef RKPDXFLD_H
  26. #define RKPDXFLD_H
  27.  
  28. #ifndef   __STRING_H
  29.   #include <string.h>
  30. #endif
  31.  
  32. #ifndef   __STDLIB_H
  33.   #include <stdlib.h>
  34. #endif
  35.  
  36. #ifndef   PXENGINE_H
  37.   extern "C" {
  38.        #include <pxengine.h>
  39.   }
  40. #endif
  41.  
  42. #define   CKERR   if (err) return (err)
  43.  
  44. extern    class pxtable;
  45.  
  46. //    ╓─────────────────────────────────────────────────────────────────╖
  47. //    ║                     Abstract class for Fields                   ║
  48. //    ╚═════════════════════════════════════════════════════════════════╝
  49.  
  50. class absfld {
  51. protected:
  52.  
  53.   FIELDHANDLE   fh;
  54.  
  55. public:
  56.  
  57.   absfld();
  58.   ~absfld();
  59.  
  60.   virtual int   isa()             { return (0); }
  61.   FIELDHANDLE   fhret()           { return ( fh ); }
  62.   virtual int   get()             { return (-1); }
  63.  
  64.   virtual int   put(int = FALSE)  { return (-1); }
  65.  
  66.   virtual int   setinfo(pxtable&, char *) { return (-1); }
  67.  
  68.   virtual int   search(char *, int = SEARCHFIRST)
  69.                         { return (-1); }
  70.  
  71.   virtual int   search(short,  int = SEARCHFIRST)
  72.                         { return (-1); }
  73.  
  74.   virtual int   search(double, int = SEARCHFIRST)
  75.                         { return (-1); }
  76.  
  77.   virtual int   search(long,   int = SEARCHFIRST)
  78.                         { return (-1); }
  79.  
  80.           int   search_fld(TABLEHANDLE, RECORDHANDLE, int, int);
  81.  
  82. };
  83.  
  84. //    ╓───────────────────────────────────────────────────────────────────╖
  85. //    ║                     Field class for CHARS                         ║
  86. //    ╚═══════════════════════════════════════════════════════════════════╝
  87.  
  88. class CharFld : public absfld
  89. {
  90.   pxtable*  tblp;     // pointer to base table class
  91.   char      *data;
  92.   int       size;
  93.  
  94. public:
  95.  
  96.   CharFld ();
  97.   ~CharFld();
  98.  
  99.   int   isa()                     { return (1); }
  100.         operator char *()         { return data; }
  101.   void  operator = (char *);
  102.   int   get();
  103.   int   put(int = FALSE);
  104.   int   setinfo(pxtable&, char *);
  105.   int   search(char *srchvar, int mode = SEARCHFIRST);
  106. };
  107.  
  108. //    ╓───────────────────────────────────────────────────────────────────╖
  109. //    ║                     Field class for SHORTS                        ║
  110. //    ╚═══════════════════════════════════════════════════════════════════╝
  111.  
  112. class ShortFld : public absfld
  113. {
  114.   pxtable*  tblp;     // pointer to base table class
  115.   short   data;
  116.  
  117. public:
  118.  
  119.   ShortFld();
  120.   ~ShortFld();
  121.  
  122.   int   isa()                     { return (2); }
  123.         operator short()          { return data; }
  124.         operator short *()        { return &data; }
  125.         operator >(int comp)      { return data > comp; }
  126.         operator <(int comp)      { return data < comp; }
  127.   void  operator = (short newval) { data = newval; }
  128.   int   get();
  129.   int   put(int = FALSE);
  130.   int   setinfo(pxtable&, char *);
  131.   int   search(short srchvar, int mode = 1);
  132. };
  133.  
  134. //    ╓───────────────────────────────────────────────────────────────────╖
  135. //    ║                     Field class for DOUBLES                       ║
  136. //    ╚═══════════════════════════════════════════════════════════════════╝
  137.  
  138. class DblFld : public absfld
  139. {
  140.   pxtable*  tblp;     // pointer to base table class
  141.   double  data;
  142.  
  143. public:
  144.  
  145.   DblFld();
  146.   ~DblFld();
  147.  
  148.   int     isa()                      { return (3); }
  149.             operator double()          { return data; }
  150.             operator double *()        { return &data; }
  151.              operator >(double comp)    { return data > comp; }
  152.              operator <(double comp)    { return data < comp; }
  153.   void     operator =(char *val)      { data=strtod(val, NULL); }
  154.   void    operator = (double newval) { data = newval; }
  155.   int     get();
  156.   int     put(int = FALSE);
  157.   int     setinfo(pxtable&, char *);
  158.   int     search(double srchvar, int mode = SEARCHFIRST);
  159. };
  160.  
  161. //    ╓───────────────────────────────────────────────────────────────────╖
  162. //    ║                     Field class for DATES                         ║
  163. //    ╚═══════════════════════════════════════════════════════════════════╝
  164.  
  165. class DateFld : public absfld
  166. {
  167.   pxtable*  tblp;     // pointer to base table class
  168.   long      data;
  169.   char      datastr [11];
  170.  
  171. public:
  172.  
  173.   DateFld();
  174.   ~DateFld();
  175.  
  176.   int   isa()                     { return (4); }
  177.         operator char *()         { return datastr; }
  178.   int   operator = (char *);
  179.   int   get();
  180.   int   put(int = FALSE);
  181.   int   setinfo(pxtable&, char *);
  182.   // int   search(TABLEHANDLE, int, char *srchvar, int mode = SEARCHFIRST);
  183.   int   toint(int &mo, int &da, int &yr)
  184.             { return ( PXDateDecode(data, &mo, &da, &yr) ); }
  185.   int   frint(int mo, int da, int yr)
  186.             { return ( PXDateEncode(mo, da, yr, &data) ); }
  187. };
  188.  
  189.  
  190. #endif
  191.